package pers.zc.activiti.thread.demo2;

import java.util.concurrent.Callable;

/**
 * @description 作业demo
 * @Author Lin FuYuan
 * @date 2020/5/28
 */
public class TaskDemo extends ParentStatus  implements Callable<Result>{
    private String key;

    public TaskDemo(String key) {
        this.key = key;
    }

    @Override
    public Result call() throws Exception {

        System.out.println("线程开始运行");
        //判断状态是否可以运行
        Entity entity = statusMap.get(key);
        //如果不是等待状态, 不能运行,跳出方法 返回false
        if(!WAIT.equals(entity.getStatus())){
            return new Result(key,false);
        }
        //可以运行  修改状态为运行中
        entity.setStatus(RUNNING);
        //写入运行的线程
        entity.setThread(Thread.currentThread());
        //执行业务
        for (int i = 0; i <10 ; i++) {
            if(Thread.interrupted()){
                //检测到线程停止  中断循环 返回false
                return new Result(key,false);
            }
            Thread.sleep(1000);
        }
        //完成任务 修改状态
        return new Result(key,true);
    }
}
